Wireless communication systems are widely deployed to provide various types of communications such as voice and data. One such system is wide band code division multiple access (WCDMA), which has been adopted in various competing wireless communication standards, e.g. third generation partnership project 3GPP, 3GPP project 2 (3GPP2) and long term evolution 3GPP (LTE 3GPP).
To overcome data corruption that can occur during RF transmission, the different wireless communication standards typically include some form of channel coding, where one common channel coding technique is turbo coding.
Turbo coding involves the use of a turbo encoder for encoding a code segment (i.e. a data packet) and a turbo decoder for the decoding of the encoded code segment. A turbo encoder typically includes a pair of convolutional encoders, one of which receives information bits (i.e. systematic bits) while the other convolutional encoder receives interleaved information bits. The information bits are shuffled (interleaved) in accordance with a specified interleaving scheme. The pair of convolutional encoders output two sequences of parity bits that are modulated and transmitted to a receiver. The systematic bits are also modulated and transmitted to the receiver.
The receiver has a turbo decoder that receives so-called channel data. The turbo decoder processes channel data and interleaved channel data in order to reconstruct the data packets that were provided to the turbo encoder. Briefly, turbo decoding includes calculating branch metrics, path metrics (including forward state metrics and backward state metrics), and extrinsic information in a recursive manner.
A channel data block is usually partitioned to windows. The size of these windows is usually set to provide a good trade-off between turbo decoding overhead and memory requirement. In many prior art devices even if such a good trade off is provided, each window is preceded by a “warm up” period in order to compensate for the lack of proper initial conditions.